Modern computer graphics authoring systems such as Adobe Illustrator™ provide an artist with the ability to fill a display object using a variety of fill styles. A radial gradient blend is one such fill style. An example of a radial gradient blend is shown in FIG. 1.
A radial gradient blend display object is an object having enclosed pixels that are filled, or shaded, such that each pixel color value is dependent on its position relative to a focal point contained within the bounds of the object.
One method of generating a radial gradient blend consists of rendering a sequence of concentric circles of diminishing radii where the color of each successive circle is the color desired for the portion of a blend region whose distance from the focal point is equal to the radius of that circle. The smaller circles are rendered over the preceding circles, with each successive circle occluding the preceding circle except for an annulus created by the difference of the two circles' radii. A crude example of a radial gradient blend rendered by this method is shown in FIG. 5. The radial gradient blend in the particular example of FIG. 5 consists of six differently colored circles 510-560.
The rendering method described above is inefficient because it creates a large amount of “overdraw”. “Overdraw” is a term used in computer graphics to describe a situation where a set of pixels is rendered to an initial color and then rendered to a different color (possibly multiple times) before being displayed. This is inherently inefficient because only the final rendered color of a pixel affects how the pixel is displayed—all rendering operations prior to the final one were wasted effort. In a typical implementation that uses, for instance, 256 differently colored circles, the outer most band of the blend would have no overdraw but each inner band would have successively more overdraw, culminating in the innermost circle which would be overdrawn 255 times. The above prior art method is also inefficient as it involves the processing of many edges. Considering again a typical implementation that uses 256 circles, the number of edges to be processed by the rendering system will be approximately 256 times the number of edges required to simply mark the boundary of the blend.